1.The developed source code is a Java file and it can be executed from command prompt.
  After opening command prompt set the path to location where source code is located using
  "cd PATH".

2. Once the path is set to source code location, use "javac Filename.java" to compile it 
   and once it is compiled without any errors use "java Filename/main_Classname" to run the code.
   My filename is MyProject.java. So I have used "javac MyProject.java" to compile and "java MyProject" to execute. 

3. Once the code is run, a user interface is displayed with 2 buttons - "Select File" and "Submit".
   Click on "Select file" button to select the input file and "Submit" button to execute FP-TREE algorithm on selected file. 

4. The input file is located at same location of source code. It consists of a transaction per line where each transaction is a set of items seperated by ",".

5. LOGIC :

	a.) class Node:
		A class "Node" is created to represent each element of FP-Tree. Each node has an item, frequency, parent(pointer to it's parent node), 
		children(List of child nodes), nextsameitem(pointer to connect same items to header table).

	b.) prepareheader(input transactions)
		This function iterates through all the input transactions and develops a hashmap(key:value pairs) where keys are unique items in input transactions 
		and values are their frequencies in those transactions.
		Now by iterating through this hashmap, create header node only for items with their values greater than "min_support count" 
		and sort these header nodes in descending order of their frequencies. 
		Put the remaining elements in a list and use this to filter input transactions(remove infrequent items) 
		and sort transactions in descending frequency of items.
   
	c.) constructFPTree(input transactions , header table)
		NOTE : The input transactions given as input are filtered transactions in prepareheader.
		Create a root node and for each transaction in filtered transactions begin traversal from root.
		If the item in transaction is child to current node, increase its frequency by 1 and set current node to child.
		else create a new child with this item and set current node to that child 

	d.) fpGrowth() function :
		This function is a recursive and for each item in header table it constructs a projected FP-TREE 
		and continues to do that recursively until frequent itemsets are identified.

6. Once the "Submit" button is clicked, code is executed and an output text file "output_fptree_itemsets" is created 
   at the same location of source code and input file.

7. The output file consists of 2 parts.
   a) FP-TREE which is constructed for given input transactions and each node in the tree is represented as "item:frequency(parent item)".

   b) FREQUENT ITEMSETS which are the identified frequent itemsets extracted by mining above constructed FP-TREE.
